package com.kgc.crowd.distributioncrowdwebui.controller;

import com.kgc.crowd.distributioncrowdcommon.api.MemberManagerRemoteService;
import com.kgc.crowd.distributioncrowdcommon.pojo.ResultEntity;
import com.kgc.crowd.distributioncrowdcommon.util.CrowdConstant;
import com.kgc.crowd.distributioncrowdcommon.vo.MemberSignSuccessVO;
import com.kgc.crowd.distributioncrowdcommon.vo.MemberVO;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.annotation.Resource;
import javax.servlet.http.HttpSession;

@Controller
public class MemverController {
    @Resource
    MemberManagerRemoteService memberManagerRemoteService;

    @RequestMapping("/member/manager/to/mamber/center/page")
    public String toMemberCenter(){
        return "member";
    }
    @RequestMapping("/member/manager/minecrowdfunding")
    public String tominecrowdfunding(){
        return "minecrowdfunding";
    }

    @RequestMapping("/member/manager/to/login")
    public String login(MemberVO memberVO,
                        Model model,
                        HttpSession session){
        String loginacct=memberVO.getLoginacct();
        String userpawd=memberVO.getUserpswd();

        ResultEntity<MemberSignSuccessVO> loginResultEntity= memberManagerRemoteService.login(loginacct, userpawd);

       // String result=loginResultEntity.getResult();
        if (loginResultEntity.getResult().equals(ResultEntity.FAILED)){
            model.addAttribute(CrowdConstant.ATTR_NAME_MESSAGE,CrowdConstant.MESSAGE_LOGIN_FAILED);
            return "login";
        }
        MemberSignSuccessVO memberSignSuccessVO=loginResultEntity.getData();
        session.setAttribute(CrowdConstant.ATTR_NAME_LOGIN_MEMBER,memberSignSuccessVO);


        return "redirect:/member/manager/to/mamber/center/page";
    }
@RequestMapping("/member/manager/logout")
    public String logout(HttpSession session){
        MemberSignSuccessVO memberSignSuccessVO=(MemberSignSuccessVO)session.getAttribute(CrowdConstant.ATTR_NAME_LOGIN_MEMBER);

        if (memberSignSuccessVO==null){
            return "redirect:/index";
        }

        String token=memberSignSuccessVO.getToken();
        ResultEntity<String> resultEntity=memberManagerRemoteService.logout(token);
        String result=resultEntity.getResult();
        if (ResultEntity.FAILED.equals(result)){
            throw new RuntimeException(resultEntity.getMessage());
        }
        session.invalidate();
        return "redirect:/index";
}

@RequestMapping("/member/manager/send/code")
    public ResultEntity<String> cendCode(String phoneNum){
        ResultEntity<String> stringResultEntity=memberManagerRemoteService.sendCode(phoneNum);
        return stringResultEntity;
}
@RequestMapping("/member/manager/register")
    public String register(MemberVO memberVO,Model model){
        ResultEntity<String> register=memberManagerRemoteService.register(memberVO);
        if (register.getResult().equals(ResultEntity.FAILED)){
            model.addAttribute(CrowdConstant.ATTR_NAME_MESSAGE,register.getMessage());
            return "reg";
        }
        return "login";
}



}
